#pragma once

using namespace System;
using namespace System::Collections::Generic;
using namespace EnvDTE80;
using namespace EnvDTE;

namespace Serika
{
	public ref class GlobalInstance : public Object
	{
	private:
		GlobalInstance();
		~GlobalInstance();

	public:
		static GlobalInstance^ Instance(String^ iden);

	public:
		property DTE2^ dte2
		{
			DTE2^ get() { return mDte; }
			void set(DTE2^ dte) { mDte = dte; }
		}

		property AddIn^ addin
		{
			AddIn^ get() { return mAddIn; }
			void set(AddIn^ addIn) { mAddIn = addIn; }
		}

	private:
		typedef Dictionary<String^, GlobalInstance^> InstDict;
		static InstDict^ sInstDict = gcnew InstDict;

		DTE2^ mDte;
		AddIn^ mAddIn;
	};
}
